import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class UploadService {
    constructor(private readonly configService: ConfigService) { }

    /**
     * 处理文件上传
     * @param file 上传的文件
     * @param type 文件类型：image 或 video
     * @returns 文件访问URL
     */
    uploadFile(
        file: Express.Multer.File,
        type: 'image' | 'video',
    ): { url: string; filename: string; size: number } {
        if (!file) {
            throw new Error('文件不存在');
        }

        // 获取应用端口
        const port = this.configService.get<number>('app.port', 3000);
        const baseUrl = process.env.BASE_URL || `http://localhost:${port}`;

        // 构建文件访问URL
        // 注意：实际部署时需要配置静态文件服务
        const typePath = type === 'image' ? 'images' : 'videos';
        // 使用 filename，如果不存在则使用 originalname（虽然在使用 diskStorage 时 filename 应该总是存在）
        const filename = file.filename || file.originalname;
        const fileUrl = `${baseUrl}/uploads/${typePath}/${filename}`;

        return {
            url: fileUrl,
            filename: filename,
            size: file.size,
        };
    }
}

